在今天的內容中,將進行應用的測試與優化。測試是確保應用在各種情況下能夠正常運行的重要環節,而優化則能提高應用的性能和使用體驗,最後則是在這三十天的種種感想。
使用 Mocha 和 Chai 進行單元測試和 API 測試。這兩個工具相輔相成,可以幫助驗證應用的功能是否如預期運作。
安裝 Mocha 和 Chai:
bash
npm install --save-dev mocha chai
在專案目錄中建立 test 文件夾,並在其中創建測試文件:
js
const chai = require('chai');
const chaiHttp = require('chai-http');
const server = require('../app'); // 引入你的 Express 應用
chai.should();
chai.use(chaiHttp);
describe('Transactions API', () => {
it('應該獲取所有交易紀錄', (done) => {
chai.request(server)
.get('/api/transactions')
.end((err, res) => {
res.should.have.status(200);
res.body.should.be.a('array');
done();
});
});
});
使用 Mocha 進行測試:
npx mocha
這將會運行測試並顯示結果。如果測試通過,就代表應用的功能正確無誤。
優化應用的性能和反應速度是一個持續的過程,今天介紹幾個方面是可以優化的方向:
資料庫查詢優化
使用 MongoDB 時,可以針對查詢的需求創建索引,提高查詢速度。針對常用的查詢條件(如用戶ID),可以為資料庫字段創建索引。
js
transactionSchema.index({ userId: 1 });
使用緩存
對於高頻繁的讀取操作(如顯示財務報表),可以利用 Redis 進行緩存,減少資料庫的負載,提升應用的反應速度。
安裝 Redis:
bash
npm install redis
設置緩存範例:
js
const redisClient = require('redis').createClient();
const getFinancialReport = async (req, res) => {
redisClient.get(`report:${req.user.id}`, async (err, report) => {
if (report) {
return res.status(200).json(JSON.parse(report));
} else {
const transactions = await Transaction.find({ userId: req.user.id });
const reportData = calculateReport(transactions);
redisClient.setex(`report:${req.user.id}`, 3600, JSON.stringify(reportData));
return res.status(200).json(reportData);
}
});
};
非同步 I/O 與程式優化
Node.js 是基於非同步 I/O 模型,所以應該確保在處理 I/O 操作時,使用適當的非同步方法,避免阻塞應用的主執行緒。
利用工具如 New Relic 或 PM2 進行性能監控,能幫助檢測應用的瓶頸,及時發現並解決潛在的性能問題。
使用 PM2 來監控應用的記憶體使用和 CPU 資源,並進行負載均衡:
bash
npm install pm2 -g
pm2 start app.js --watch
pm2 monit
終於做完這三十天了!這段時間以來實在是非常有挑戰性,而且每天都會去接觸到,過程是蠻辛苦的,也遇到許多程式瓶頸,常常Debug了半天才解決,但透過網路上前輩們的資料,以及Chatgpt的協助,我才能一步一步走到現在,順利完成此次鐵人賽,也順利實作出個人財務管理應用,雖然功能還有很大的進步空間,但這也是我很大的一個突破,期望未來能做出更好的作品!